// 入口文件
import {initMixin} from './init'
import { initLifeCycle } from './lifecycle';
import { initStateMixin } from './state';

//主要构造函数Vue, 使用方法是 new Vue({})
function Vue(options) { //options是用户选项
  this._init(options)  // this就是Vue实例对象
}
initMixin(Vue) //扩展init方法 为了分文件和把Vue实例传过去
initLifeCycle(Vue); //为了实现模板引擎 _update _render 
initStateMixin(Vue); //实现了nextTick $watch

// text-----------------
// let render1 = compileToFunction(`<li key="a” a="1” style="color:blue">{{name}}</li>`);
// let vm1 = new Vue({ data: { name: 'zf' } })
// let prevVnode = render1.call(vm1)
// let el = createElm(prevVnode); document.body.appendchild(el)

// let render2 = compileToFunction(`<li key="a" a="1" style="color:red;">{{name}}</li>`);
// let vm2 = new Vue({ data: { name: 'zf' } })
// let nextVnode = render2.call(vm2);

// // 直接将新的节点替换掉了老的，不是直接替换 而是比较两个人的区别之后在替换。 diff算法
// //diff算法是一个平级比较的过程 父亲和父亲比对，儿子和儿子比对
// setTimeout(() => {
//   patch(prevVnode, nextVnode)
//   // let newEl = createElm(nextVnode);
//   // el.parentNode.replaceChild(newEl,el)},1000)

// }, 1000)



export default Vue